Rendering computer graphic images is a computationally intensive process, involving numerous calculations. Any optimization to the rendering process can improve performance. One improvement is to share the computational workload between a central processing unit (CPU) and a graphics-processing unit (GPU). In typical computer graphics systems, the CPU sends commands and data to the GPU in order to direct the rendering process. From the commands and the data, the GPU renders the graphical image, object, or scene. As another enhancement to performance, some computer graphics systems have two GPUs. By operating in parallel, multiple GPUs can accelerate the rendering process by sharing the rendering workload. For example, the GPUs can each render a different portion of the image, which one of the GPU subsequently combines to produce the final image.
To support multiple external GPUs concurrently, however, the CPU needs to communicate with each GPU, often sending the same rendering commands and data to the GPUs. As are result, many cycles of CPU operation and bandwidth of the CPU bus are consumed transmitting duplicative information. Occupying the resources of the CPU and the CPU bus with such duplicative information prevents such resources from engaging in operations that may be put to more productive use.